package com.itany.corejava.code08_集合.list集合;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author MissChen
 * @date 2024年03月04日 14:07
 */
public class Test01_ArrayList {
    public static void main(String[] args) {
        // defineList();
        // listMethod();
        // listToArray();
        arrayToList();
    }

    public static void defineList() {
        // 创建一个初始容量为10的ArrayList空集合
        // 如果没有指定类型,则默认为Object, 集合中可以存放任意类型的数据
        // 如果指定了集合类型,则集合中只能存放对应类型的数据
        ArrayList list = new ArrayList();

        //size()获取当前集合中元素的个数
        System.out.println(list.size());

        //添加元素
        list.add(1);
        list.add("admin");
        list.add(true);
        list.add(8.9);

        System.out.println(list.size());
        System.out.println(list);

        //创建一个指定初始容量的空集合
        //指定了集合类型，则集合中只能存放对应类型的数据
        ArrayList<String> list2 = new ArrayList<>(5);
        list2.add("aa");
        list2.add("bb");
        list2.add("cc");
        list2.add("dd");
        list2.add("ee");
        list2.add("ff");
        System.out.println(list2);

        List<Integer> list3 = new ArrayList<>();
        list3.add(1);
        System.out.println(list3);

        List<String> list4 = new ArrayList<>(list);
        System.out.println(list4);


    }

    public static void listMethod() {
        ArrayList<String> list = new ArrayList<>();
        System.out.println("返回集合中元素的数量:" + list.size());
        // add():向集合的末尾添加指定元素,元素的顺序与放入的顺序一致
        list.add("jack1");
        list.add("jack2");
        list.add("jack3");
        list.add("jack4");
        list.add("jack5");
        list.add("jack6");
        list.add("jack7");
        list.add("jack7");

        // add(int index,T t) 向集合中index索引位置添加指定元素t
        list.add(1, "tom");//在索引为1的位置添加tom

        // set(int index,T t) 将集合中index索引位置的元素修改为t,并返回原有的元素值
        System.out.println(list.set(1, "lili"));//tom
        System.out.println(list);

        // remove(T t) 移除集合中首次出现的指定元素。如果存在指定元素,移除后返回true,否则返回false。
        System.out.println(list.remove("jack6"));
        System.out.println(list);

        // remove(int index) 移除集合中index索引位置的元素,并返回被移除的元素
        System.out.println(list.remove(2));//返回删除的元素
        System.out.println(list);

        // get(int index) 返回index索引位置的元素
        System.out.println(list.get(0));
        System.out.println(list.get(1));

        // indexOf(T t) 返回指定元素在集合中第一次出现的索引位置。如果不存在,则返回-1
        System.out.println(list.indexOf("jack7"));
        System.out.println(list.indexOf("aaa"));

        // lastIndexOf(T t) 返回指定元素在集合中最后一次出现的索引位置。如果不存在,则返回-1
        System.out.println(list.lastIndexOf("jack7"));

        // contains(T t) 判断集合中是否存在指定元素t,返回boolean类型
        System.out.println(list.contains("admin"));


        List<String> list2 = new ArrayList<>();
        // 判断指定集合是否为空,返回boolean类型数据。相当于list2.size() == 0
        System.out.println(list2.isEmpty());//返回布尔值
        System.out.println(list2.size());


    }

    public static void listToArray() {
        ArrayList list = new ArrayList();
        list.add("admin");
        list.add("alice");
        list.add("jack");
        list.add("coco");
        list.add(100);
        list.add(true);
        //toArray方法，将ArrayList转换成数组
        Object[] arr=list.toArray();
        System.out.println(Arrays.toString(arr));

    }

    public static void arrayToList(){
        String[] arr={"aa","bb","cc","dd"};
        //将数组转换成集合,此时获取的集合是List , 而并不是ArrayList
        // 如果调用ArrayList中的方法，是报异常
        List<String> lists=Arrays.asList(arr);
        System.out.println(lists);


        List<Integer> list=Arrays.asList(1,2,3,4,5,6,7);
        System.out.println(list);

       List<String> names=new ArrayList<>(Arrays.asList("admin","lili","tom"));
       names.add("dd");
       System.out.println(names);







    }
}
